package mapper;

import org.apache.ibatis.annotations.Param;
import pojos.admin.AdminInfo;
import pojos.admin.AdminLoginRecord;
import pojos.common.DocHelper;
import pojos.common.SubjectInfo;
import pojos.sms.SmsRecord;
import pojos.subject.ClassInfoManager;
import pojos.subject.UserRelationshipManager;

import java.util.List;

/**
 * 公共查询接口
 */
public interface CommonMapper {

    /**
     * 管理员登录检查
     */
    AdminInfo adminLoginCheck(String loginName) throws Exception;

    /**
     * 登录信息记录
     */
    void adminLoginRecord(AdminLoginRecord loginRecord) throws Exception;

    /**
     * 管理员账号锁定
     */
    void adminAccountLock(int adminId) throws Exception;

    /**
     * 管理员账号自动解锁
     */
    void adminAccountAutoUnlock(int adminId)throws Exception;

    /**
     * 更新管理员当天密码错误次数
     */
    void updateAdminErrorTime(int adminId) throws Exception;

    /**
     * 短信发送记录
     */
    void smsSendRecord(SmsRecord smsRecord) throws Exception;

    /**
     * 修改管理员头像
     */
    void updateAdminAvatar(@Param("id") int id, @Param("path") String path) throws Exception;

    /**
     * 查询所有可用科目信息
     */
    List<SubjectInfo> queryAllEnaSubjectInfo()throws Exception;

    /**
     * 查询所有科目信息
     */
    List<SubjectInfo> queryAllSubjectInfo() throws Exception;

    /**
     * 查询特定的科目信息
     */
    SubjectInfo querySubjectById(int id) throws Exception;

    /**
     * 用户关系查询
     */
    List<UserRelationshipManager> queryAllUserRelationship() throws Exception;

    /**
     * 定向查找用户关系
     */
    UserRelationshipManager queryUserRelationship(int id) throws Exception;

    /**
     * 修改用户关系
     */
    void updateUserRelationship(UserRelationshipManager userRelationshipManager) throws Exception;

    /**
     * 修改用户Cookies
     */
    void updateUserCookies(@Param("role") String role, @Param("id") int id,
                           @Param("cookies") String cookies, @Param("cookiesTime") long cookiesTime) throws Exception;

    /**
     * 修改用户密码
     */
    void updateUserPassword(@Param("role") String role,@Param("id") int id,
                            @Param("password") String password) throws Exception;

    /**
     * 教师课程管理查询
     */
    List<ClassInfoManager> teacherClassInfo(@Param("teacherId") int teacherId,
                                            @Param("isEnable") int isEnable) throws Exception;

    /**
     * 修改教师头像
     */
    void alterTeacherAvatar(@Param("teacherId") int teacherId, @Param("path") String path) throws Exception;

    /**
     * 学生课程管理查询
     */
    List<ClassInfoManager> studentClassInfo(@Param("studentId") int studentId,
                                            @Param("isEnable") int isEnable) throws Exception;

    /**
     * 修改学生头像
     */
    void alterStudentAvatar(@Param("studentId") int studentId,
                            @Param("path") String path) throws Exception;

    /**
     * 家长课程管理查询
     */
    List<ClassInfoManager> parentsClassInfo(@Param("parentsId") int parentsId,
                                            @Param("isEnable") int isEnable) throws Exception;

    /**
     * 修改家长头像
     */
    void alterParentsAvatar(@Param("parentsId") int parentsId,
                            @Param("path") String path) throws Exception;

    /**
     * 查询所有帮助文档信息
     */
    List<DocHelper> queryDocInfo() throws Exception;

    /**
     * 添加文档
     */
    void addDocument(DocHelper docHelper) throws Exception;

    /**
     * 查询文档信息
     */
    DocHelper queryDocById(int docId)throws Exception;

    /**
     * 修改文档
     */
    void updateDocument(DocHelper docHelper)throws Exception;
}
